/**
 * <p>Copyright (c) 2017 深圳市鹏途交通科技有限公司 </p>
 * <p>				   All right reserved. 		     </p>
 * 
 * <p>项目名称 ： 	深圳市国省检日常化监管系统         </p>
 * <p>创建者   :	hey 
 * 
 * <p>描   述  :   GovernSpeedServiceImpl.java for com.pengtu.gsj.service.impl.lzgl    </p>
 * 
 * <p>最后修改 : $: Sep 13, 2017-10:20:39 AM v 1.0.0	 hey   $ </p>
 * 
*/

package com.pengtu.gsj.service.impl.lzgl;

import java.util.List;





import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.pengtu.gsj.dao.base.Page;
import com.pengtu.gsj.dao.base.QueryFilter;
import com.pengtu.gsj.dao.lzgl.GovernSpeedDao;
import com.pengtu.gsj.entity.app.Attachment;
import com.pengtu.gsj.entity.lzgl.GovernSpeed;
import com.pengtu.gsj.service.lzgl.GovernSpeedService;
import com.pengtu.gsj.service.system.SystemManageService;

/**
 * 
 * GovernSpeedServiceImpl
 * 
 * Sep 13, 2017 10:20:39 AM
 * 
 * @version 1.0.0
 * 
 */
@Service
@Transactional
public class GovernSpeedServiceImpl implements GovernSpeedService{
	@Autowired
	private GovernSpeedDao governSpeedDao;
	
	@Autowired
	private SystemManageService systemManageService;
	
	
	
	@Override
	public void saveGovernSpeed(GovernSpeed governSpeed){
		governSpeedDao.save(governSpeed);
	}
	
	@Override
	public Page<GovernSpeed> findGovernSpeed(Page<GovernSpeed> page, final QueryFilter queryFilter){
		return governSpeedDao.findPage(page, queryFilter);
	}
	
	@Override
	public GovernSpeed getGovernSpeedById(String id){
		return governSpeedDao.get(id);
	}
	
	@Override
	public void  delateGovernSpeed(GovernSpeed governSpeed){
		if(governSpeed.getAttachments() != null){
			for(Attachment attachment : governSpeed.getAttachments()){
				systemManageService.deleteAttachment(attachment);
			}
		}
		governSpeedDao.delete(governSpeed);
	}
	
	@Override
	public List<GovernSpeed> getGovernSpeeds(QueryFilter queryFilter){
		return governSpeedDao.find(queryFilter);
	}

	/**
	 * 适用：治超机制中新增或者修改时验证 年份 是否已经存在
	 * @param testYear 当条记录的 年份
	 * @param id 当条记录的id
	 */
	@Override
	public boolean checkYear(String testYear, String id) {
		return governSpeedDao.checkProperty("testYear", testYear, id);
	}
	
	/**
	 * 适用：治超机制中新增或者修改时验证 检测站 是否已经存在
	 * @param stationName 当条记录的 检测站名称
	 * @param id 当条记录的id
	 */
	@Override
	public boolean checkStationName(String stationName, String id) {
		return governSpeedDao.checkProperty("stationName", stationName, id);
	}

	/**
	 * 适用：治超机制中新增或者修改时验证 年份+检测站 是否已经存在
	 * @param testYear 当条记录的 年份
	 * @param stationName 当条记录的 检测站名称
	 * @param id 当条记录的id
	 */
	@Override
	public Boolean checkIsSame(String testYear, String stationName, String id) {
		//1、如果id不为空的话，如果是不修改（或修改前后一样）返回true，否则按新增操作处理
		if (StringUtils.isNotEmpty(id)) {
			String year = governSpeedDao.get(id).getTestYear();
			String name = governSpeedDao.get(id).getStationName();
			if (testYear.equals(year) && stationName.equals(name)) {
				return true;
			} else {
				return checkSame(testYear, stationName);
			}
		} else {
			//2、如果id为空时，则用判断方式判断是否存在testYear的同时存在stationName
			return checkSame(testYear, stationName);
		}
	}
	
	public Boolean checkSame(String testYear, String stationName){
		Boolean flag = true;
		if (StringUtils.isEmpty(testYear) || StringUtils.isEmpty(stationName)) {
			return true;
		} else {
			List<GovernSpeed> govLists = governSpeedDao.findBy("testYear", testYear);
			for (GovernSpeed governSpeed : govLists) {
				if (flag == true) {
					flag = stationName.equals(governSpeed.getStationName()) ? false : true;
				}
			}
		}
		return flag;
	}
}
